from multiprocessing import Process,Queue
import time

def producer(queue):
    """生产者进程，向队列中放入数据"""
    for i in range(10):
        item = f"数据 {i}"
        print(f"生产者进程正在向队列中放入数据：{item}")
        queue.put(item)
        time.sleep(0.5)   # 模拟生产耗时
    queue.put(None) # 最后发送一个结束信号

def consumer(queue):
    """消费者进程：从队列中取出数据"""
    while True:
        # queue.get()：从队列中获取数据，如果此时队列为空，则阻塞直到队列中有数据
        item = queue.get()  # 从队列中获取数据
        if item is None:
            break
        print(f"消费者正在处理数据：{item}")
        time.sleep(0.8)   # 模拟处理耗时

if __name__ == '__main__':
    # 创建一个队列
    queue = Queue()
    # 创建生产者和消费者进程
    producer_process = Process(target=producer, args=(queue,))
    consumer_process = Process(target=consumer, args=(queue,))

    # 启动生产者和消费者进程
    producer_process.start()
    consumer_process.start()

    # 等待生产者完成
    producer_process.join()
    # 等待消费者完成
    consumer_process.join()

    print("所有任务完成")